#include <bits/stdc++.h>
using namespace std;
const int N=30;
int g[N][N],d[N][N];
char a,b;
int n,m;
bool st[10005];
void floyd()
{
	memcpy(d, g, sizeof d);
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(d[i][k]==1 && d[k][j]==1)
				{
					d[i][j]=1;
					
				}
			}
		}
		
	}
}
int check()
{
	for(int i=1;i<=n;i++)
	{
		if(d[i][i]) return 2;	
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
		{
			if(!d[i][j] && !d[j][i])
			return 0;
		}
	}
	return 1;
	
}
char get_min()
{
	for(int i=1;i<=n;i++)
	{
		if(!st[i])
		{
			bool flag=true;
			for(int j=1;j<=n;j++)
			{
				if(!st[j] && d[i][j])
				{
					flag=false;
					break;
				}
			}
			if(flag)
			{
				st[i]=true;
				return 'A'+i-1;
			}
		}
	}
}
int main()
{
	while(cin>>n>>m)
	{
		if(n==0 && m==0) break;
		memset(g,0,sizeof g);
        int type=0,t;
		for(int i=1;i<=n;i++)
		{
		scanf("%c<%c",&a,&b);
		g[b-'A'+1][a-'A'+1]=1;
		type=check();
		if(type) t=i;
		
		}
		if(!type) printf("Sorted sequence cannot be determined.\n");
		else if(type==2) printf("Inconsistency found after %d relations.\n",t);
		else if(type==1) 
		{
			memset(st,0,sizeof st);
			printf("Sorted sequence determined after %d relations: ",t);
			for(int i=1;i<=n;i++)
			{
				printf("%c",get_min());
			}
			printf(".\n");
		}
		
	}
	return 0;
}
